CC = gcc
CXX = g++
FLAGS = -O0 -g
NAME = smol

smol: vm SVMachine.o
	yacc -d -v -o src/analizators/smol.cc src/analizators/smol.y
	lex -8 -f -o src/analizators/lex.yy.c src/analizators/smol.l
	$(CC) $(FLAGS) -c src/analizators/lex.yy.c -o src/analizators/lex.yy.o
	$(CXX) $(FLAGS) -o $(NAME) src/analizators/smol.cc src/analizators/lex.yy.o src/vm/SObject.o src/vm/SClassObject.o src/vm/SRegistryObj.o src/vm/SGarbageCollector.o src/vm/SVMachine.o src/vm/SClassInteger.o src/vm/SClassFloat.o src/vm/SClassBoolean.o src/vm/SClassString.o src/vm/SClassArray.o src/vm/SClassHash.o src/vm/SClassFile.o -lpthread -lreadline
	mv smol bin
	
SVMachine.o:
	$(CXX) $(FLAGS) -c src/vm/SVMachine.cpp -o src/vm/SVMachine.o

vm:
	make -C src/vm 
	
clean:
	make -C src/vm clean
	rm -rf *.o *.~* 
	rm bin/$(NAME) src/analizators/smol.cc
